package cn.zhfeat.hatch.web.controller.system;

import cn.zhfeat.hatch.dto.sysuser.SysRoleAuthorityDto;
import cn.zhfeat.hatch.dto.sysuser.SysRoleDto;
import cn.zhfeat.hatch.web.service.IRoleService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;


/**
 * @description: 角色信息相关控制层
 *
 * 原：RequestMapping("/api/role") 变更为：@RequestMapping("/role")
 *
 * @author ZhangHao
 * @date 2018年5月21日 下午2:27:26 
 * @version 1.0.0.1
 */
@Component
@RequestMapping("/role")
public class RoleController {

	@Autowired
	private IRoleService roleService;

	/**
	 * @description: 角色列表查询
	 *
	 * 注：这里不用dto接收参数是因为前端dataTable传的json串，后续优化
	 *
	 * @param param
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月21日 下午2:39:01 
	 * @version 1.0.0.1
	 */
	@RequestMapping(value = "/ajaxPageData")
	@ResponseBody
	public Object ajaxPageData(@RequestBody String param) {
		return roleService.ajaxPageData(param);
	}

	/**
	 * @description: 角色删除操作
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月21日 下午6:50:08 
	 * @version 1.0.0.1
	 */
	@RequestMapping(value = "/ajaxDelete")
	@ResponseBody
	public Object ajaxDelete(SysRoleDto dto){
		return roleService.delete(dto);
	}

	/**
	 * @description: 从数据库查询该公司最大客户对应的菜单权限
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月22日 下午2:59:56 
	 * @version 1.0.0.1
	 */
	@RequestMapping(value = "/ajaxAuthorityGroupList")
	@ResponseBody
	public Object ajaxAuthorityGroupList(SysRoleDto dto){
		return roleService.ajaxAuthorityGroupList(dto);
	}

	/**
	 * @description: 获取公司下的全部的角色用于页面下拉框，无需分页
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月22日 下午6:47:26 
	 * @version 1.0.0.1
	 */
	@RequestMapping(value = "/ajaxRoleList")
	@ResponseBody
	public Object ajaxRoleList(SysRoleDto dto) {
		return roleService.ajaxRoleList(dto);
	}

	/**
	 * @description: 根据角色id查询角色对应的一组菜单，无需分页
	 *
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月22日 下午9:46:18 
	 * @version 1.0.0.1
	 */
	@RequestMapping(value = "/ajaxSelectRoleAuthority")
	@ResponseBody
	public Object ajaxSelectRoleAuthority(SysRoleAuthorityDto dto) {
		return roleService.ajaxSelectRoleAuthority(dto);
	}

	/**
	 * @description: 检查角色名称是否重复，规则是否正确
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月23日 下午4:39:11 
	 * @version 1.0.0.1
	 */
	@RequestMapping(value = "/ajaxCheckName")
	@ResponseBody
	public Object ajaxCheckName(SysRoleDto dto) {
		return roleService.ajaxCheckName(dto);
	}

	/**
	 * @description: 新增角色，角色权限，角色外部应用，角色数据权限操作
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月23日 下午5:33:07 
	 * @version 1.0.0.1
	 */
	@RequestMapping(value = "/create")
	@ResponseBody
	public Object create(SysRoleDto dto) {
		return roleService.create(dto);
	}

	/**
	 * @description: 更新角色，角色权限，角色外部应用，角色数据权限操作
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月23日 下午8:08:19 
	 * @version 1.0.0.1
	 */
	@RequestMapping(value = "/update")
	@ResponseBody
	public Object update(SysRoleDto dto) {
		return roleService.update(dto);
	}

	/**
	 * @description: 从数据库查询全部的菜单权限，为账号开通提供使用
	 *
	 * @param dto
	 * @return
	 * @author ZhangHao
	 * @date 2018年5月22日 下午2:59:56
	 * @version 1.0.0.1
	 */
	@RequestMapping(value = "/ajaxAuthorityAll")
	@ResponseBody
	public Object ajaxAuthorityAll(SysRoleDto dto){
		return roleService.ajaxAuthorityAll(dto);
	}
}
